﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Webparshing
{
   class ComboControl
    {

        /// <summary>
        /// AddComboItem(ref ComboBox 명, string _Key, string _Value)
        /// GetComboKey(ref ComboBox 명)
        /// GetComboText(ref ComboBox 명)
        /// </summary>
        /// <param name="명"></param>
        /// 

        public void GetText(ref string txt)
        {
            if ((txt == null)) { txt = ""; }
            else
            {
                txt = txt.Replace("'", "").Trim(' ');
            }
        }




        //============================================================
        //콤보박스 초기화 하기.
        // cbo 콤보박스
        // intTab 탭순서
        // blnChk 체크상태
        //============================================================
        public void IniComboBox(ref ComboBox cbo, int intTab)
        {
            try
            {
                cbo.TabIndex = intTab;
                cbo.Enabled = true;

                cbo.DropDownStyle = ComboBoxStyle.DropDownList; //사용자가 편집할수 없는 형식.

                cbo.Items.Clear();

                SelectComboBox(ref cbo); //맨 처음 항목을 설정한다.
            }
            catch 
            {
            }
        }


        //============================================================
        //콤보박스에 자료 입력하기.
        //============================================================
        public void AddComboItem(ref ComboBox cbo, string _Key, string _Value)
        {
            cbo.Items.Add(new ItemKeyValue(_Key, _Value));
        }
        public void AddComboItem(ref ToolStripComboBox cbo, string _Key, string _Value)
        {
            cbo.Items.Add(new ItemKeyValue(_Key, _Value));
        }

        //============================================================
        //콤보박스에 자료 선택하기.
        //============================================================
        public void SelectComboBox(ref ComboBox cbo)
        {
            try
            {
                if (cbo.Items.Count <= 0)
                {
                    cbo.SelectedIndex = -1;
                }
                else
                {
                    cbo.SelectedIndex = 0;
                }
            }
            catch 
            {
            }
        }
        public void SelectComboBox(ref ComboBox cbo, string _Key)
        {
            GetText(ref _Key);
            ItemKeyValue mList = null;
            try
            {
                if (_Key == "")
                {
                    //키가 없으면 맨 상위의 것을 구르게 한다.
                    SelectComboBox(ref cbo);
                }
                else
                {
                    //키가 있으면 내부에서 찾아본다.
                    int iCnt = cbo.Items.Count;
                    int i = 0;

                    for (i = 0; i < iCnt; i++)
                    {
                        mList = (ItemKeyValue)cbo.Items[i];

                        if (mList.Key == _Key)
                        {
                            cbo.SelectedIndex = i;
                            break;
                        }
                    }

                }

            }
            catch
            {
            }
            finally
            {
                mList = null;
            }

        }
        public void SelectComboBox(ref ToolStripComboBox cbo)
        {
            try
            {
                if (cbo.Items.Count <= 0)
                {
                    cbo.SelectedIndex = -1;
                }
                else
                {
                    cbo.SelectedIndex = 0;
                }
            }
            catch
            {
            }
        }
       
       public void SelectComboBox(ref ToolStripComboBox cbo, string _Key)
        {
            GetText(ref _Key);
            ItemKeyValue mList = null;
            try
            {
                if (_Key == "")
                {
                    //키가 없으면 맨 상위의 것을 구르게 한다.
                    SelectComboBox(ref cbo);
                }
                else
                {
                    //키가 있으면 내부에서 찾아본다.
                    int iCnt = cbo.Items.Count;
                    int i = 0;

                    for (i = 0; i < iCnt; i++)
                    {
                        mList = (ItemKeyValue)cbo.Items[i];

                        if (mList.Key == _Key)
                        {
                            cbo.SelectedIndex = i;
                            break;
                        }
                    }

                }

            }
            catch
            {
            }
            finally
            {
                mList = null;
            }

        }
        //'============================================================
        //'콤보박스에 입력된 키 반환하기.
        //'============================================================
       public string GetComboKey(ref ComboBox cbo)
       {
           if (cbo.Items.Count <= 0) { return ""; }

           ItemKeyValue mList = null;

           try
           {
               mList = (ItemKeyValue)cbo.Items[cbo.SelectedIndex];

               return mList.Key;

           }
           catch
           {
               return "";
           }
           finally
           {
               mList = null;
           }
       }
       public string GetComboKey(ref ToolStripComboBox cbo)
       {
           if (cbo.Items.Count <= 0) { return ""; }

           ItemKeyValue mList = null;

           try
           {
               mList = (ItemKeyValue)cbo.Items[cbo.SelectedIndex];

               return mList.Key;

           }
           catch
           {
               return "";
           }
           finally
           {
               mList = null;
           }
       }

        //============================================================
        //콤보박스에 입력된 텍스트 반환하기.
        //============================================================
        public string GetComboText(ref ComboBox cbo)
        {

            if (cbo.Items.Count <= 0)
            {
                return "";
            }

            ItemKeyValue mList = null;
            try
            {
                mList = (ItemKeyValue)cbo.Items[cbo.SelectedIndex];

                return mList.Value;

            }
            catch
            {
                return "";
            }
            finally
            {
                mList = null;
            }

        }
        public string GetComboText(ref ToolStripComboBox cbo)
        {

            if (cbo.Items.Count <= 0)
            {
                return "";
            }

            ItemKeyValue mList = null;
            try
            {
                mList = (ItemKeyValue)cbo.Items[cbo.SelectedIndex];

                return mList.Value;

            }
            catch
            {
                return "";
            }
            finally
            {
                mList = null;
            }

        }

    } // end class




    //============================================================
    //콤보박스에 입력할 자료 구조 클래스
    //============================================================
    public class ItemKeyValue
    {

        private string strKey; //키
        private string strValue; //값

        public ItemKeyValue(string _key, string _value)
        {
            strKey = _key;
            strValue = _value;
        }

        public string Value
        {
            get
            {
                return strValue;
            }
            set
            {
                strValue = value;
            }
        }

        public string Key
        {
            get
            {
                return strKey;
            }
            set
            {
                strKey = value;
            }
        }

        //============================================================
        //이부분을 해주어야 콤보박스에 값이 나올때 해당값이 나오게 된다.
        //============================================================
        public override string ToString()
        {
            return strValue;
        }

    } // end class

} // end namespace
